package GUI.Ventas;

import java.rmi.RemoteException;

import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;

import GUI.Administracion.Exceptions.ExcepcionesMenuVentas;
import GUI.Ventas.Facturacion.CerrarVenta;
import client.entities.ClientVO;
import sale.entities.FacturaVO;
import sale.entities.OrderVO;
import sale.entities.SaleVO;
import sale.exceptions.EmptySaleExcpetion;
import service.ServiceFacade;
import service.article.exceptions.ProxyException;
import service.client.interfaces.ClientProxyMgt;

public class selectClient extends Dialog {

	protected Object result;
	protected Shell shell;
	private Text cedula;
	ClientVO cliente;
	OrderVO orden;
	int op;
	FacturaVO factura;
	//op=0 Venta delivery
	//op =1 Cerar Venta
	/**
	 * Create the dialog.
	 * @param parent
	 * @param style
	 */
	public selectClient(Shell parent, int style, OrderVO o, FacturaVO venta, int opcion) {
		
		super(parent, style);
		setText("SWT Dialog");
		orden=o;
		factura=venta;
		op=opcion;
	}

	/**
	 * Open the dialog.
	 * @return the result
	 */
	public Object open() {
		createContents();
		shell.open();
		shell.layout();
		Display display = getParent().getDisplay();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
		return result;
	}

	/**
	 * Create contents of the dialog.
	 */
	private void createContents() {
		shell = new Shell(getParent(), getStyle());
		shell.setSize(443, 247);
		shell.setText(getText());
		
		Label lblCedulaDeIdentidad = new Label(shell, SWT.NONE);
		lblCedulaDeIdentidad.setBounds(31, 54, 118, 14);
		lblCedulaDeIdentidad.setText("Cedula de Identidad");
		
		cedula = new Text(shell, SWT.BORDER);
		cedula.setBounds(155, 49, 154, 19);
		
		final Label resultado = new Label(shell, SWT.NONE);
		resultado.setBounds(31, 105, 278, 14);
		resultado.setText("New Label");
		
		Button btnBuscar = new Button(shell, SWT.NONE);
		btnBuscar.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
			String opcion = cedula.getText();
			cliente=null;
			ClientProxyMgt uso = ServiceFacade.getInstance().getClientProxyMgt();
			ClientVO[] clientes = null;
			try {
				System.out.println("got them");
				clientes = uso.getClients();
			} catch (RemoteException e1) {
				ExcepcionesMenuVentas ventana = new ExcepcionesMenuVentas (shell, shell.getStyle(), "Error de Conexion con el Servidor");
				ventana.open();
				shell.dispose();
				e1.printStackTrace();
			} catch (ProxyException e1) {
				ExcepcionesMenuVentas ventana = new ExcepcionesMenuVentas (shell, shell.getStyle(), "Error de Conexion con el Servidor");
				ventana.open();
				shell.dispose();
				e1.printStackTrace();
			}
			boolean found = false;
			for (int i = 0; i<clientes.length;i++){
				if(opcion.equalsIgnoreCase("")){
					resultado.setText("Ingrese una cedula Valida");
				}
				if(clientes[i].getClientId()==Integer.parseInt((opcion))){
					cliente=clientes[i];
					resultado.setText("El Cliente es" + cliente.getName() + cliente.getLastName());
					found=true;
				}
				if(found==false){
					resultado.setText("No existen en la base de datos Clientes con esa Cedula");
				}
			}
			}
		});
		btnBuscar.setBounds(329, 40, 94, 28);
		btnBuscar.setText("Buscar");
		
		Label label = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
		label.setBounds(10, 125, 433, 19);
		
		Button btnAceptar = new Button(shell, SWT.NONE);
		btnAceptar.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				//System.out.println("hola");
			/*	if(op==0){
					ClientProxyMgt usos = ServiceFacade.getInstance().getClientProxyMgt();
					ClientVO[] clientes = null;
					try {
						clientes = usos.getClients();
					} catch (RemoteException e2) {
						// TODO Auto-generated catch block
						e2.printStackTrace();
					} catch (ProxyException e2) {
						// TODO Auto-generated catch block
						e2.printStackTrace();
					}
					String opcionn = cedula.getText();
					for (int i = 0; i<clientes.length;i++){
						if(clientes[i].getClientId()==Integer.parseInt((opcionn))){
							cliente=clientes[i];
							//resultado.setText("El Cliente es" + cliente.getName() + cliente.getLastName());
							
						}
						if (cliente ==null){
							System.out.println("nullo");
						}
				orden.setCi(cliente.getClientId());
				NuevaVentaDelivery nueva = new NuevaVentaDelivery (shell, shell.getStyle(), null, null, orden);
				shell.setVisible(false);
				nueva.open();
					}}*/
			if (op==1){
				
				System.out.println("opcion 1");
				ClientProxyMgt uso = ServiceFacade.getInstance().getClientProxyMgt();
				ClientVO[] clientess = null;
				try {
					clientess = uso.getClients();
				} catch (RemoteException e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				} catch (ProxyException e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}
				String opcion = cedula.getText();
				for (int i = 0; i<clientess.length;i++){
					if(clientess[i].getClientId()==Integer.parseInt((opcion))){
				//
						cliente=clientess[i];
						//resultado.setText("El Cliente es" + cliente.getName() + cliente.getLastName());
						
					}
				factura.setClient(cliente);
				System.out.println("listo");
				CerrarVenta cerrar = new CerrarVenta (shell, shell.getStyle(),null, factura);
				shell.setVisible(false);
				try {
					cerrar.open();
					shell.close();
				} catch (RemoteException e1) {
					ExcepcionesMenuVentas ventana = new ExcepcionesMenuVentas (shell, shell.getStyle(), "Error de Conexion con el Servidor");
					ventana.open();
					shell.dispose();
					e1.printStackTrace();
				} catch (ProxyException e1) {
					ExcepcionesMenuVentas ventana = new ExcepcionesMenuVentas (shell, shell.getStyle(), "Error de Conexion con el Servidor");
					ventana.open();
					shell.dispose();
					e1.printStackTrace();
				} catch (EmptySaleExcpetion e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				}}
			
			
			if(op==3){
				ClientProxyMgt u = ServiceFacade.getInstance().getClientProxyMgt();
				ClientVO[] clientes=null;
				try {
					clientes = u.getClients();
				} catch (RemoteException e1) {
					ExcepcionesMenuVentas ventana = new ExcepcionesMenuVentas (shell, shell.getStyle(), "Error de Conexion con el Servidor");
					ventana.open();
					shell.dispose();
					e1.printStackTrace();
				} catch (ProxyException e1) {
					ExcepcionesMenuVentas ventana = new ExcepcionesMenuVentas (shell, shell.getStyle(), "Error de Conexion con el Servidor");
					ventana.open();
					shell.dispose();
					e1.printStackTrace();
				}
				for (int i = 0; i<clientes.length;i++){
					if(clientes[i].getClientId()==Integer.parseInt((cedula.getText()))){
				//
						cliente=clientes[i];
						//resultado.setText("El Cliente es" + cliente.getName() + cliente.getLastName());
					}
					}
					//shell, shell.getStyle(), pedidos, descripciones, orden,null
					NuevaVentaDelivery v = new NuevaVentaDelivery(shell, shell.getStyle(), null, null, orden, cliente);
					
					System.out.println("listo");
					shell.setVisible(false);
					v.open();
					shell.close();
			}
			
			
			}
			
		});
	
		
		
		btnAceptar.setBounds(85, 156, 94, 28);
		btnAceptar.setText("Aceptar");
		
		Button btnCancelar = new Button(shell, SWT.NONE);
		btnCancelar.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				if(op==3){
				NuevaVentaDelivery nueva = new NuevaVentaDelivery (shell, shell.getStyle(), null, null, orden, null);
			}}
		});
		btnCancelar.setBounds(264, 156, 94, 28);
		btnCancelar.setText("Cancelar");

	}
}
